The invention relates to the field of computer graphics, and in particular to methods and apparatus for creating and maintaining connections between computer graphics components.
Many computer graphic images are created by mathematically modeling the interaction of light with a three dimensional scene from a given viewpoint. This process, called rendering, generates a two-dimensional image of the scene from the given viewpoint, and is analogous to taking a photograph of a real-world scene. Animated sequences can be created by rendering a sequence of images of a scene as the scene is gradually changed over time. A great deal of effort has been devoted to making realistic looking and artistically compelling rendered images and animations.
Computer graphics images, animations, and other productions involving computer graphics, such as interactive entertainment software, are created using computer graphics applications operating on or processing a number of different components. Generally, components include any data and instructions used to create products and applications that include computer graphics. Components can include three-dimensional models of geometry; texture maps and other arrays of data; lighting and shading programs used to determine the visual appearance of models; simulation systems; and animation data and deformer functions used to specify changes and motion over time.
Components typically include one or more attributes containing data associated with the component. Attributes can specify any static or varying property of a component. For example, a component may be a model of a sphere. Attributes of this example component could describe properties such as the radius of the sphere and the location of the center of the sphere. Different types of components may include different numbers and types of attributes.
Components are often related to each other with complex cross-reference, inheritance, and dependency relationships. Many computer graphics content creation applications, such as applications for uses including modeling, animation, lighting, texturing, and shading, specify relationships between pairs of components for a variety of purposes. These relationships are typically implemented as references within the software application and are referred to as direct connections. These applications typically include functions for adding direct connections between two components, deleting direct connections between two components, and querying components to identify any directly connected components. The software application is typically responsible for creating, deleting, and maintaining the integrity of direct connections between components, for example using pointers, linked lists, sets of component identifiers, and/or graph data structures.
Users of software applications often need to specify additional relationships between components. These additional relationships may be used to specify operations or processing to be performed using these components within the same software application or by one or more other software applications. For example, a user may specify a lighting relationship between a light component and an object component within a modeling software application. A rendering application will use this lighting relationship to apply an illumination effect to the object component.
Additional relationships defined by users (or by user-defined applications, scripts, macros, or other programmable functionality acting alone or in conjunction with one or more software applications) may be implemented using the direct connection functionality included in many computer graphics content creation software applications. However, using the direct connection functionality of a computer graphics content creation software applications can lead to problems when components are temporarily or permanently deleted.
For example, a texture component may be associated via a direct connection with an object component to apply a texture to the object. If a modeling user decides to redesign the object and deletes original object component during this process, other users, such as texture artists, will not be able to determine the purpose of the texture component. Moreover, once the modeling user deletes the original object component, the direct connection is also automatically deleted. The modeling user must then recreate the object component and its direct connection with the texture component to restore the functionality of the texture component.
In another example, many operations that appear simple to user may cause the temporary destruction of components, and thus the destruction of their direct connections. Subsequent operations that recreate these components will not automatically restore the destroyed direct connections. For example, if a user desires to replace an older object component named “Foo” with a new version of the object component, the user may first delete the older object component and then rename the new version of the object component to “Foo,” so that it has the same name as the object component it replaces. However, upon deleting the older object component, all of the direct connections to this component are immediately destroyed. Renaming the new version of the object component does not recreate or restore these direct connections. Instead, prior systems required users to manually recreate all of the direct connections for replacement components. This process is time-consuming and error-prone.
Therefore, there is an unmet need for computer graphics content creation applications to create and maintain connections between components in an automatic and robust manner.